Theorem Proving Support in Programming Language Semantics N° ???? Theorem Proving Support in Programming Language Semantics
نویسنده
چکیده
We describe several views of the semantics of a simple programming language as formal documents in the calculus of inductive constructions that can be verified by the Coq proof system. Covered aspects are natural semantics, denotational semantics, axiomatic semantics, and abstract interpretation. Descriptions as recursive functions are also provided whenever suitable, thus yielding a a verification condition generator and a static analyser that can be run inside the theorem prover for use in reflective proofs. Extraction of an interpreter from the denotational semantics is also described. All different aspects are formally proved sound with respect to the natural semantics specification. Key-words: Coq, natural semantics, structural operational semantics, denotational semantics, axiomatic semantics, abstract interpretation, formal verification, calculus of inductive constructions, proof by reflection, program extraction Sémantique des langages de programmation avec le support d’un outil de preuve Résumé : Nous décrivons plusieurs points de vue sur la sémantique d’un petit langage de programmation, vus comme des documents dans le calcul des constructions inductives qui peuvent être vérifiés par le système Coq. Les aspects couverts sont la sémantique naturelle, la sémantique dénotationnelle, la sémantique axiomatique, et l’interprétation abstraite. Des descriptions sous formes de fonctions récursives sont fournies quand c’est adapté, et on obtient ainsi un générateur de conditions de vérification et un analyseur statique qui peuvent être utilisés dans des preuves par réflexion. L’extraction d’un interprète à partir de la sémantique dénotationnelle est également décrite. Des preuves formelles assurant la correction des différents aspects vis-à-vis de la sémantique naturelle sont également abordes. Mots-clés : Coq, sémantique naturelle, sémantique dénotationnelle, sémantique axiomatique, interprétation abstraite, vérification formelle, calcul des constructions inductives, preuve par réflexion, extraction de programmes Theorem proving support in programming language semantics 3 This paper is dedicated to the memory of Gilles Kahn, my thesis advisor, my mentor, my friend.
منابع مشابه
A short introduction to two approaches in formal verification of security protocols: model checking and theorem proving
In this paper, we shortly review two formal approaches in verification of security protocols; model checking and theorem proving. Model checking is based on studying the behavior of protocols via generating all different behaviors of a protocol and checking whether the desired goals are satisfied in all instances or not. We investigate Scyther operational semantics as n example of this...
متن کاملA Tool to Support Formal Reasoning about Computer Languages
A tool to support formal reasoning about computer languages and spe-ciic language texts is described. The intention is to provide a tool that can build a formal reasoning system in a mechanical theorem prover from two speciications, one for the syntax of the language and one for the semantics. A parser, pretty-printer and internal representations are generated from the former. Logical represent...
متن کاملAn abstract dynamic semantics for C
This report is a presentation of a formal semantics for the C programming language. The semantics has been defined operationally in a structured semantics style and covers the bulk of the core of the language. The semantics has been developed in a theorem prover (HOL), where some expected consequences of the language definition have been proved.
متن کاملTheorem proving support in programming language semantics
We describe several views of the semantics of a simple programming language as formal documents in the calculus of inductive constructions that can be verified by the Coq proof system. Covered aspects are natural semantics, denotational semantics, axiomatic semantics, and abstract interpretation. Descriptions as recursive functions are also provided whenever suitable, thus yielding a a verifica...
متن کاملMechanized Operational Semantics via (co)induction (preliminary Report)
We give a fully automated description of a small programming language in the theorem prover Isabelle-98. The language syntax and semantics are encoded, and we formally verify a range of semantic properties. This is achieved via uniform (co)inductive methods.
متن کامل